﻿using System;
using System.Collections;

namespace ConsoleApp1
{
    /**
     * 
     * 
     * 
     * 
     */
    //1)程序设计题1：已知相册类为Album，照片类为Photo，
    //请使用索引器设计容量为5的相册存放照片，需要实现索引器的读/写功能；
    public delegate void storePhotoDlg(string photos);
    public delegate string getPhotoDlg(int index);
    public delegate string alterPhotoDlg(int index,string photo);
    class Program
    {
        //声明一个storePhotoDlg事件
        public static event storePhotoDlg store;
        static string[] photos = new string[5];
        static void Main(string[] args)
        {

            storePhotoDlg dlg1 = delegate (string name)
            {
                Console.WriteLine($"{name} , 匿名函数启动！！！");
            };
            //lamda语句
            storePhotoDlg dlg2 = (name) =>
            {
                Console.WriteLine($"{name} , lamda函数启动！！！");
            };

            storePhotoDlg sto = storePhoto;
            getPhotoDlg get = getPhoto;
            alterPhotoDlg alter = alterPhoto;
            //get += getPhoto;
            sto("photo1");
            sto("photo2");
            sto("photo3");
            sto("photo4");
            sto("photo5");
            sto("photo6");
            //store += Program_store;//订阅事件
            //
            string str = get(3);
            Console.WriteLine($"获取照片为 ： {str}");
            Console.WriteLine($"修改后照片为 ："+ alter(2, "photo6")); 

        }

        private static void Program_store(string photos)
        {
            Console.WriteLine($"{photos} , 事件启动！！！修改照片");
           
        }
        public static string alterPhoto(int index, string photo)
        {
            if (index < 0 || index >= 5)
            {
                Console.WriteLine($"{index} 位置越界，修改失败。。。");
                return null;
            }
            else if ( photos[index] == null)
            {
                Console.WriteLine($"{index} 位置无照片，自动变为存照片。");
                photos[index] = photo;
                return null;
            }
            else
            {
                Console.WriteLine($"{index} 位置修改成功！！！");
                photos[index] = photo;
                return photos[index];
            }
        }

        public static void storePhoto(string photo)
        {
            Boolean flag = false;
            for (int i = 0; i < 5; i++)
            {
                if(photos[i] == null)
                {
                    flag = true;
                    photos[i] = photo;
                    break;
                }
            }
            if (flag)
            {
                Console.WriteLine($"{photo}存储成功");
            }
            else
            {
                Console.WriteLine($"空间不足，{photo}存储失败");
            }
        }

        public static string getPhoto(int index)
        {
            if(index<0 || index >= 5 ||photos[index] == null)
            {
                Console.WriteLine($"{index} 位置无照片，获取失败。。。");
                return null;
            }
            else
            {
                Console.WriteLine($"照片 {photos[index]} 获取成功！！！");
                return photos[index];
            }
        }
        /*
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="FUSShopURL">FileUpload对象</param>
        /// <param name="UpladURL">图片要放到的目录名称</param>
        /// <returns>如果FileUpload不为空则返回上传后的图片位置，否则返回为空字符</returns>
        public static string uploadImage(FileUpload FUSShopURL, string UpladURL)
        {
            if (FUSShopURL.HasFile)
            {
                //获取当前的时间，一当作图片的名字
                string fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond.ToString();
                //获取图片的扩展名
                string Extent = System.IO.Path.GetExtension(FUSShopURL.PostedFile.FileName);
                //重命名图片
                fileName += Extent;
                //设置上传图片保存的文件夹
                string dir = System.Web.HttpContext.Current.Server.MapPath(UpladURL);
                //指定图片的路径及文件名
                string path = dir + "\\" + fileName;
                //把上传得图片保存到指定的文件加中
                FUSShopURL.PostedFile.SaveAs(path);
                return fileName;
            }
            else
            {
                return "";
            }
        
        }
        */
    }
}